package InterfazGrafica;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import ClasesBasicas.Figura;
import ClasesBasicas.Jugador;
import ClasesBasicas.Tablero;
import ClasesBasicas.Tipo;

public class GuardarPrimeraVez {
	Connection con;
	Jugador j1;
	Jugador j2;
	Tablero t;
	
	public GuardarPrimeraVez(Jugador j1, Jugador j2, Tablero t){
		this.j1=j1;
		this.j2=j2;
		this.t=t;
		try{
		conexionBaseDatos();
		guardarTablero();
		guardarJugadores();
		guardarPiezas();
		cerrarConexion();
		System.out.println("correcto");
		} catch (Exception ex) {
			System.out.println("Error a la hora de guardar");
		}		
	}
	
	public void conexionBaseDatos() {

		try {
			Class.forName("org.sqlite.JDBC");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("driver no encontrado");
		}
		try {
			con = DriverManager
					.getConnection("jdbc:sqlite:db/BaseProyect.s3db");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("No se pudo conectar a la base de datos");
		}
		System.out.println("Conexion establecida...");

	}

	public void cerrarConexion() {

		try {
			con.close();
		} catch (SQLException e) {

			System.out.println("No se pudo cerrar correctamente");
		}
		System.out.println("Conexion cerrada...");
	}

	public void guardarTablero() throws Exception{
		Statement state = con.createStatement();
		state.executeUpdate("Insert into Partida(codPartida) values ("+t.getCodPartida()+");");
	}
	
	public void guardarJugadores() throws Exception{
		Statement state = con.createStatement();
		state.executeUpdate("Insert into Jugador values ("+j1.getCodJugador()+",'"
				+j1.getNombre()+"',"+j1.getTurno()+",0,"+t.getCodPartida()+");");
		int a=j2.getCodJugador();
		a++;
		state.executeUpdate("Insert into Jugador values ("+a+",'"
				+j2.getNombre()+"',"+j2.getTurno()+",0,"+t.getCodPartida()+");");
	}
	
	public void guardarPiezas() throws Exception{
		Statement state = con.createStatement();
		Figura [][] array=t.getArray();
		String a;
		String c;
		for (int i=0; i<array.length; i++){
			for (int j=0; j<array.length; j++){
				if (array[i][j]!=null){
				if ( array[i][j].getTipo()==Tipo.Rey){
					a="Rey";
				} else if(array[i][j].getTipo()==Tipo.Reina){
					a="Reina";
				}
				else if (array[i][j].getTipo()==Tipo.Caballo){
					a="Caballo";
				}
				else if (array[i][j].getTipo()==Tipo.Peon){
					a="Peon";
				}
				else if (array[i][j].getTipo()==Tipo.Alfil){
					a="Alfil";
				}
				else a="Torre";
				if (array[i][j].getEsNegro()) c="Negro";
				else c="Blanco";
				state.executeUpdate("Insert into Pieza values ('"+a+" ', '"+ c+"' , " +array[i][j].getFila()+" , "+array[i][j].getColumna()+" , " + t.getCodPartida()+" , "+array[i][j].getCodPieza()+ " );" );
			}
		}
	}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
